﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace KioskosJugandoLimpio.Encuestas
{
    public partial class Encuesta : System.Web.UI.Page
    {
        private List<Classes.Respuesta> respuestas;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.HttpMethod == "GET")
            {
                if (null != Request.QueryString["idEncuestas"])
                {
                    Classes.Encuesta encuesta = new Classes.Encuesta(int.Parse(Request.QueryString["idEncuestas"]));
                    DivEncuesta.Controls.Add(encuesta.form);
                }
            }
            if (Request.HttpMethod == "POST") {
                string serialized = txtForm.Value;
                string[] splitted = serialized.Split('|');
                Hashtable answers = new Hashtable();
                foreach (string keyValue in splitted) {
                    string[] separated = keyValue.Split('^');
                    string value = separated[1];
                    string key = separated[0].Split('_')[0];
                    if (value.Substring(0, 1) == "~")
                    {
                        answers.Add(key, value);
                    }
                    else
                    {
                        if (!answers.ContainsKey(key)) {
                            answers[key] = new List<string>();
                        }
                        {
                            ((List<string>)(answers[key])).Add(value);
                        }
                    }
                }
                guardar(answers);
            }
        }

        private void guardar(Hashtable answers)
        {
            Classes.Encuesta encuesta = new Classes.Encuesta(int.Parse(Request.QueryString["idEncuestas"]));
            string CURP = answers["txtCURP"].ToString().Substring(1);
            string Paterno = CURP.Substring(0, 2);
            string Materno = CURP.Substring(2, 1);
            string Nombre = CURP.Substring(3, 1);
            string FechaNac = CURP.Substring(4, 6);
            string sexo = CURP.Substring(10, 1);
            int anio = int.Parse(FechaNac.Substring(0, 2));
            int mes = int.Parse(FechaNac.Substring(2, 2));
            int dia = int.Parse(FechaNac.Substring(4, 2));
            DateTime fn = new DateTime(anio ,mes , dia);
            TimeSpan vida = DateTime.Now.Subtract(fn);
            int edad = vida.Days/365;
            Classes.Ciudadano ciudadano = new Classes.Ciudadano(CURP , Nombre , Paterno , Materno , edad , sexo , 1);
            respuestas = new List<Classes.Respuesta>();
            foreach (string key in answers.Keys) {
                if (key != "txtCURP") {
                    Classes.Respuesta respuesta = new Classes.Respuesta( encuesta );
                    respuesta.ciudadano = ciudadano;
                    respuesta.pregunta = new Classes.Pregunta(int.Parse(key));
                    if (answers[key] is List<string>)
                    {
                        foreach (string value in (List<string>)(answers[key]) )
                        {
                            respuesta.opciones.Add(new Classes.Opcion(int.Parse(value)));
                        }
                    }
                    else {
                        respuesta.respuesta = answers[key].ToString().Substring(1);
                    }
                    respuestas.Add(respuesta);
                }
            }
            ciudadano.idCiudadano = ciudadano.idCiudadanos;
            foreach (Classes.Respuesta respuesta in respuestas) {
                respuesta.guardar();
            }
        }
    }
}